Các định nghĩa Máy_ảo

Máy ảo hệ thống

Một "máy ảo" được định nghĩa ban đầu bởi Popek và Goldberg như là "một bản sao hiệu quả, tách biệt của một máy tính thực sự."[1] Việc sử dụng hiện tại bao gồm các máy ảo không có sự tương ứng trực tiếp với bất kỳ phần cứng thực nào.[2]TPhần cứng vật lý, "thế giới thực" chạy VM thường được gọi là 'máy chủ' (host) và máy ảo được mô phỏng trên máy đó thường được gọi là 'khách' (guest). Một host có thể mô phỏng một số khách, mỗi khách có thể mô phỏng các hệ điều hành và nền tảng phần cứng khác nhau.

Mong muốn chạy nhiều hệ điều hành là động lực ban đầu cho các máy ảo, để cho phép chia sẻ thời gian giữa một số hệ điều hành tác vụ đơn. Trong một số khía cạnh, một máy ảo hệ thống có thể được coi là một khái quát của khái niệm bộ nhớ ảo có trước đây trong lịch sử. CP/CMS của IBM, các hệ thống đầu tiên cho phép ảo hóa hoàn toàn, đã thực hiện chia sẻ thời gian bằng cách cung cấp cho mỗi người dùng một hệ điều hành một người dùng, Conversational Monitor System (CMS). Không giống như bộ nhớ ảo, một máy ảo hệ thống cho phép người dùng viết các hướng dẫn đặc quyền trong mã của chúng. Cách tiếp cận này có những lợi thế nhất định, chẳng hạn như thêm các thiết bị vào/ra không được hệ thống tiêu chuẩn cho phép.[2]

Khi công nghệ phát triển bộ nhớ ảo cho mục đích ảo hóa, ác hệ thống dư thừa bộ nhớ mới có thể được áp dụng để quản lý chia sẻ bộ nhớ giữa nhiều máy ảo trên một hệ điều hành máy tính. Có thể chia sẻ các trang nhớ có nội dung giống hệt nhau giữa nhiều máy ảo chạy trên cùng một máy vật lý, điều này có thể dẫn đến việc ánh xạ chúng đến cùng một trang vật lý bằng một kỹ thuật gọi là kernel same-page merging (KSM). Điều này đặc biệt hữu ích cho các trang chỉ đọc, chẳng hạn như các trang đang giữ phân đoạn mã, đó là trường hợp cho nhiều máy ảo chạy cùng một phần mềm hoặc thư viện phần mềm, máy chủ web, thành phần phần mềm trung gian, v.v. tuân thủ phần cứng máy chủ, do đó có thể chạy các hệ điều hành khác nhau trên cùng một máy tính (ví dụ: Windows, Linux hoặc các phiên bản trước của hệ điều hành) để hỗ trợ phần mềm trong tương lai.[3]

Việc sử dụng các máy ảo để hỗ trợ các hệ điều hành khách riêng biệt là phổ biến đối với các hệ thống nhúng. Một cách sử dụng thông thường sẽ là chạy một hệ điều hành thời gian thực đồng thời với một hệ điều hành phức tạp ưa thích, chẳng hạn như Linux hay Windows. Một ứng dụng khác sẽ dành cho phần mềm mới và chưa được chứng minh vẫn đang trong giai đoạn phát triển, vì vậy nó chạy trong một sandbox. Máy ảo có những lợi thế khác để phát triển hệ điều hành và có thể bao gồm cải thiện truy cập gỡ lỗi và khởi động lại nhanh hơn.[4]

Nhiều máy ảo chạy hệ điều hành khách của riêng chúng thường được sử dụng để hợp nhất máy chủ.[5]

Máy ảo tiến trình

A process VM, sometimes called an application virtual machine, or Managed Runtime Environment (MRE), runs as a normal application inside a host OS and supports a single process. It is created when that process is started and destroyed when it exits. Its purpose is to provide a platform-independent programming environment that abstracts away details of the underlying hardware or operating system and allows a program to execute in the same way on any platform.

A process VM provides a high-level abstraction – that of a high-level programming language (compared to the low-level ISA abstraction of the system VM). Process VMs are implemented using an interpreter; performance comparable to compiled programming languages can be achieved by the use of just-in-time compilation.[cần dẫn nguồn]

This type of VM has become popular with the Java programming language, which is implemented using the Java virtual machine. Other examples include the Parrot virtual machine and the .NET Framework, which runs on a VM called the Common Language Runtime. All of them can serve as an abstraction layer for any computer language.

A special case of process VMs are systems that abstract over the communication mechanisms of a (potentially heterogeneous) computer cluster. Such a VM does not consist of a single process, but one process per physical machine in the cluster. They are designed to ease the task of programming concurrent applications by letting the programmer focus on algorithms rather than the communication mechanisms provided by the interconnect and the OS. They do not hide the fact that communication takes place, and as such do not attempt to present the cluster as a single machine.[cần dẫn nguồn]

Unlike other process VMs, these systems do not provide a specific programming language, but are embedded in an existing language; typically such a system provides bindings for several languages (e.g., C and Fortran).[cần dẫn nguồn] Examples are Parallel Virtual Machine (PVM) and Message Passing Interface (MPI). They are not strictly virtual machines because the applications running on top still have access to all OS services and are therefore not confined to the system model.

Tài liệu tham khảo

WikiPedia: Máy_ảo http://www.vmware.com/pdf/asplos235_adams.pdf http://www.vmware.com/pdf/server_consolidation.pdf http://www.vmwarez.com/2006/05/super-fast-server-r... http://digital.library.wisc.edu/1793/11154 http://www.virtualcomputing.net/virtual-machines http://dl.acm.org/citation.cfm?doid=365170.365202, http://portal.acm.org/citation.cfm?id=1267848 http://portal.acm.org/citation.cfm?id=178243.17847... http://portal.acm.org/citation.cfm?id=800017.80054... http://doc.cat-v.org/inferno/4th_edition/dis_VM_de...